AufgabeWaren10 / Helper (01) / Funktionsbibliotheken =============================================== Wir haben letzte Woche Hilfsfunktionen definiert: arr() print() indent() Wir legen eine Klasse "Helper" an, die alle diese Hilfsfunktionen enthält. Aus AufgabeWaren können die Funktionen entfernt werden. Aufgerufen werden sie in Zukunft mit Helper.arr() Helper.print() Helper.indent() ... Ggf. anschließend in der Shell: C:> javac Helper.java ausführen um Helper.class anzulegen. AufgabeWaren11 ============== Anstatt alle Hilfsfunktionen aus Helper.XXX aufzurufen, legen wir ein Objekt "h" vom Typ Helper an. Alle Funktionsaufrufe können wir jetzt über das Objekt "h" ausführen. AufgabeWaren12 / Helper (02) ======================= Obwohl wir ein Objekt der Klasse Helper angelegt haben, nutzen wir dieses Objekt bisher nur, um auf Methoden der Klasse Helper zuzugreifen. Das Objekt kann aber auch Daten enthalten! Daten eines Objektes werden in sogenannten Properties gespeichert. Eine Property wird als Variable in der Klasse festgelegt. - Objektproperties sind nicht-statische Variablen in der Klasse. Sie können erst in Objekten genutzt werden, die aus der Klasse instanziiert werden. - Variablen, die in der Klasse als statisch festgelegt sind gelten für alle Objekte dieser Klasse und heißen daher Klassenvariablen. Sie können auch von statischen Methoden verwendet werden. AufgabeWaren13 / Helper (03) ----------------------- In der Klasse Helper gibt es eine Property dblIndent, und eine (nicht-statische) Methode indent(), die auf diese Property zurückgreift. Wir wollen zusätzliche Properties "intIndent" und "stringIndent" haben, und die dazugehörigen indent()-Methoden die jeweils nur ein Argument, int, bzw. String annehmen und abhängig von der Property standardmäßig formatieren. AufgabeWaren14 / Helper (schwierig) ----------------------------------- Die Formatierung von Double-Werten erfolgte bisher so, dass Währungsbeträge auf die Hundertstel-Stelle genau ausgegeben werden. d.H. - Beträge mit Genauigkeit jenseits von 0.01 werden auf Hundertstel gerundet (Stichwort Gleitkommafehler) - An Beträge ohne Hunderstel-Stelle wird in der Text- ausgabe eine "0" angehängt. Wir führen jetzt die Property "currSub" ein, mit der sich die Währungsunterteilung von 100 auf 1000 ändern lässt. d.H. bei einer Währung mit Tausendstel-Unterteilung - Wird die Genauigkeit auf 0.001 gerundet - Werden Beträge bei der Anzeige immer auf drei Nachkommastellen aufgefüllt. Modifiziert die Funktion indent(int, double) entsprechend. Hinweis: Die Funktion wird dadurch nicht-statisch, denn sie hängt ab von der currSub-Property Hinweis: je nach Betrag kann es passieren, dass man zweimal "0" an den Ausgabetext anhängen muss. Hinweis: currSub ist Objekt-weit definiert und kann in einer Funktion des Objekts einfach benutzt werden ohne dort nocheinmal explizit übergeben oder deklariert zu werden Hinweis: Falls javac benutzt wird, um eine .class-Datei zu erzeugen, muss die .class-Datei mit aktualisiert werden _Idealerweise_ ist die Lösung so allgemein gehalten, dass sich auch andere Unterteilungen einführen lassen.